The subject matter disclosed herein relates generally to software test systems, and more particularly to efficient automated test case generation and reduction.
Software systems can incorporate many algorithms and apply rules that are created and adjusted over a period of time. Software systems can include tens of thousands of lines of code, resulting in a high degree of complexity. Some software systems dynamically adjust rules used to make decisions as patterns are observed over many interactions. Due to the size, complexity, and adaptive rules that can be applied to decision making algorithms, software systems can be challenging to test.
Testing software systems as a black box, where inputs are varied and outputs are observed, can be an effective approach to observing responses to various inputs. However, the number of test cases needed for a “brute force” approach can be massive to test every possible input combination and observe the corresponding outputs. Even if every possible combination is attempted, it may be difficult to draw meaningful conclusions from the large volume of results and understand whether the software system is performing as intended.